package com.obggtc.picture.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 媒体文件实体类（图片和视频统一存储）
 */
@Data
@TableName("media_file")
public class MediaFile {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 文件唯一标识（UUID生成）
     */
    @TableField("file_id")
    private String fileId;
    
    /**
     * 文件类型：1-图片，2-视频
     */
    @TableField("file_type")
    private Integer fileType;
    
    /**
     * 原始文件名
     */
    @TableField("original_filename")
    private String originalFilename;
    
    /**
     * 存储文件名
     */
    @TableField("stored_filename")
    private String storedFilename;
    
    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;
    
    /**
     * 文件存储路径
     */
    @TableField("file_path")
    private String filePath;
    
    /**
     * 文件访问URL
     */
    @TableField("file_url")
    private String fileUrl;
    
    /**
     * 文件MIME类型
     */
    @TableField("mime_type")
    private String mimeType;
    
    /**
     * 文件扩展名
     */
    @TableField("file_extension")
    private String fileExtension;
    
    /**
     * 视频时长（秒）
     */
    private Long duration;
    
    /**
     * 分辨率（如：1920x1080）
     */
    private String resolution;
    
    /**
     * 视频缩略图URL
     */
    @TableField("thumbnail_url")
    private String thumbnailUrl;
    
    /**
     * 标题
     */
    private String title;
    
    /**
     * 描述
     */
    private String description;
    
    /**
     * 标签（逗号分隔）
     */
    private String tags;
    
    /**
     * 分类
     */
    private String category;
    
    /**
     * 观看/查看次数
     */
    @TableField("view_count")
    private Long viewCount;
    
    /**
     * 下载次数
     */
    @TableField("download_count")
    private Long downloadCount;
    
    /**
     * 状态：0-删除，1-正常，2-审核中，3-审核失败
     */
    private Integer status;
    
    /**
     * 是否公开：0-私有，1-公开
     */
    @TableField("is_public")
    private Integer isPublic;
    
    /**
     * 上传者用户名
     */
    private String uploader;
    
    /**
     * 上传者IP
     */
    @TableField("uploader_ip")
    private String uploaderIp;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
    
    /**
     * 上传时间
     */
    @TableField("upload_time")
    private LocalDateTime uploadTime;
    
    // 文件类型常量
    public static final int FILE_TYPE_IMAGE = 1;
    public static final int FILE_TYPE_VIDEO = 2;
    
    // 状态常量
    public static final int STATUS_DELETED = 0;
    public static final int STATUS_NORMAL = 1;
    public static final int STATUS_REVIEWING = 2;
    public static final int STATUS_REVIEW_FAILED = 3;
    
    // 公开状态常量
    public static final int PRIVACY_PRIVATE = 0;
    public static final int PRIVACY_PUBLIC = 1;
}
